#define _CRT_SECURE_NO_WARNINGS 1

//#pragma once
//#include <stdio.h>
//#include <stdlib.h>
//#include <assert.h>
//#include <stdbool.h>


//typedef int STDataType;
//typedef struct Stack
//{
//	STDataType* a;
//	int top;
//	int capacity;
//}ST;
//
//void StackInit(ST* ps);
//void StackDestroy(ST* ps);
//void StackPush(ST* ps, STDataType x);
//void StackPop(ST* ps);
//
//STDataType StackTop(ST* ps);
//bool StackEmpty(ST* ps);
//int StackSize(ST* ps);


#include <iostream>
#include <assert.h>
using namespace std;

typedef int STDataType;

class Stack
{
public:
	void Init(int N = 4);
	void Push(STDataType x);
	void Pop();
	STDataType Top();
	bool Empty();
	int Size();
	void Destroy();
private:
	STDataType* _a;
	int _top;
	int _capacity;
};